package Level02.Two;

/**
 * 请编写程序，演示一下死锁的情况。
 */
public class Test {
    public static void main(String[] args) {
        //死锁的原理是锁的嵌套
        //定义第一个线程
        new Thread() {
            @Override
            public void run() {
                synchronized (Object.class) {
                    System.out.println("1、我抢到了Object.class的锁");
                    try {
                        Thread.sleep(1);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    synchronized (String.class) {
                        System.out.println("1、我抢到了String.class的锁");
                    }
                }
            }
        }.start();
        new Thread() {
            @Override
            public void run() {
                synchronized (String.class) {
                    System.out.println("2、String.class的锁,我后面没内容就是死锁了");
                    synchronized (Object.class) {
                        System.out.println("2、Object.class的锁");
                    }
                }
            }
        }.start();
    }
}
